Scheduling methods are commonly used in a data processing system for controlling the execution of different work units (for example, jobs in a batch processing). For this purpose, several types of schedulers have been proposed in the last years to automate the process of submitting the execution of large quantities of jobs. The schedulers submit the jobs according to a predefined execution plan, which establishes a flow of execution of the jobs according to several factors, such as for example temporal constraints (e.g., date, time, day of the week) and dependencies (such as completion of preceding jobs). An example of scheduler is the “Tivoli Workload Scheduler” by IBM Corporation.
Each job typically involves the execution of a program, and requires several hardware and/or software resources for its execution, such as data processing apparatuses—personal computers, workstations, server machines—operating systems, software applications, databases, storage devices, output devices and the like. The resources that must be used by the job can be specified statically (i.e., identifying the actual physical or logical entities), however most of the available schedulers also allow defining the required resources through their properties; for example, it is possible to specify that the job has to be executed on a computer having a desired operating system, number of processors, installed memory, and so on. In this way, the actual resources, i.e. the actual physical or logical entities to be used when executing the job can be selected dynamically at run-time.
Currently known schedulers operate on the basis of job descriptors. A job descriptor is a collection of several different pieces of information, that may take the form of a file, associated with each job to be executed and containing in particular a description of the program(s) to be executed, the parameter(s) to be passed to the program(s) to be executed, the resource(s) required for the execution, scheduling policies to be applied for the execution of the job. The user is requested to specify, in the descriptor of the job to be submitted to the scheduler for scheduling the execution thereof, all the pieces of information necessary to the scheduler for scheduling the execution and then executing the program(s) associated with the job.
In some solutions known in the art, a same descriptor can be identically used for the scheduling of multiple jobs. In some other solutions, a sort of job descriptor templates are made available to the users for scheduling multiple jobs involving the execution of a same program; when the user wishes to submit a job, he/she has to customize the template so as to specify the parameters that are specific to that job execution.